package tfc_editor.GUI;

import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JTextArea;

import tfc_editor.OffLFileManagement.*;
import tfc_editor.pastrytools.PastryManager;

/**
 * Clase encarregada de carregar fitxers offline.
 * @author Ismael Gonzalez Burgos
 *
 */
public class FileLoader
{
	public static final int LOAD_TOTBE					= 0;
	public static final int LOAD_FITXER_NO_EXISTEIX		= -1;
	public static final int LOAD_CANCELAT_FINESTRA		= -2;
	private JFrame frame;
	private JTextArea output;
	PastryManager pm;
	EditorGUI parentEditor;

	/**
	 * Constructor per a la clase.
	 * @param fr Frame on treballar.
	 * @param tarea JTextArea d'on llegirem les dades.
	 * @param PM Punter a la clase PastryManager.
	 * @param pe Punter al editor pare.
	 */
	public FileLoader(JFrame fr,JTextArea tarea,PastryManager PM,EditorGUI pe)
	{
		frame = fr;
		output = tarea;
		pm = PM;
		parentEditor = pe;
	}
	
	/**
	 * Funcio per carregar un fitxer.
	 * @param f Fitxer a carregar.
	 */
	public void DoLoadFile(File f) 
	{
			new OffLineFileReader().ReadFile(output,f);
	}

	/**
	 * Funcio que carrega realment el fitxer.
	 * @return Resultat de la operacio.
	 */
    public int LoadFile()
    {
    	JFileChooser chooser = new JFileChooser();
    	chooser.setDialogTitle("Carregar fitxer");
    	
    	int result = chooser.showOpenDialog(frame);
    	
    	if (result==JFileChooser.APPROVE_OPTION)
    	{
    		// L'usuari ha seleccionat un fitxer. Ara pot pasar que el fitxer existeixi o no.
    		File f = chooser.getSelectedFile();
    		if (f.exists())
    		{
    			DoLoadFile(f);
    			parentEditor.SetFileName(chooser.getSelectedFile().getName());
    			parentEditor.SetTextModified(false);
    			return LOAD_TOTBE;
    		}
    		else
    		{
    			return LOAD_FITXER_NO_EXISTEIX;
    		}
    	}
    	else
    	{
    		return LOAD_CANCELAT_FINESTRA;
    	}
    }
}
